package e.odbo.data.generator;

import java.util.Date;

public class RandomDateGenerator extends Generator<Date>{
    private Date start,end;

    public RandomDateGenerator() {
        this(new Date(445555555),new Date());
    }

    public RandomDateGenerator(Date start) {
        this(start,new Date());
    }

    public RandomDateGenerator(Date start, Date end) {
        this.start = start;
        this.end = end;
    }

    @Override
    public Date generator() {
        //getTime()表示返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
        if(start.getTime() >= end.getTime()){
            return null;
        }
        long date = random(start.getTime(),end.getTime());
        return new Date(date);
    }

    @Override
    public String getName() {
        return "RandDate";
    }

    private static long random(long begin,long end){

        long rtn = begin + (long)(Math.random() * (end - begin));

        //如果返回的是开始时间和结束时间，则递归调用本函数查找随机值
        if(rtn == begin || rtn == end){
            return random(begin,end);
        }
        return rtn;

    }


}
